[C低级问题]栈中存放的数据可不可以是结构体?

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:40:36
比如二叉树的一个节点,可以直接进栈吗?还是只能把节点的指针压进栈?
搭车再问个低级问题,像
typedef struct tnode
{
char data;
struct tnode *lchild,*rchild;
}btree;
这样定义结构体时,typedef struct后面的那个tnode和最后一行的btree分别做实妹用的?为什么要定义两个名字呢?

比如二叉树的一个节点,可以直接进栈吗?还是只能把节点的指针压进栈?

可以直接进的

tnode 是类型,比如整形类型int
btree 是对象,比如一个变量a

我这样比较类写你就清楚了
tnode btree;
int a;

typedef是定义一个别名啊。。其实也就是struct tnode了。

有的时候,经常会这样。
typedef struct tnode
{
char data;
struct tnode *lchild,*rchild;
}btree,*ptr;

//这样是不是简练多了。。当然你也可以分别写单独typedef,都是一样的。
另外你说的进栈,你就把它当基本数据类型看待就是了,在函数里。函数运行的时候不是new来的东西不都放在栈区吗。。还是你说的。进栈。。应该是整个结点进栈了

可以定义一个结构体数组,压栈时,把结构体中的每个元素都附值.

typedef struct{ int x, y} node;
node stack[10]; int top = -1;

node no{3,4};
//no入栈
++top;
statck[top].x = no.x;
statck[top].y = no.y;

这样可以实现了,至于说地址入栈的话,个人不认为好,变量可能随时都有销毁的危险

typedef struct后面的那个tnode和最后一行的btree其实一个意思的啊 用也一样的 如typedef int a; a就相当于int 你定义一个int 的n 可以 a n=2;
或者int n=2;一个意思的啊!

可以的,只要那个栈是ADT